Skip to content

Conversation

@kernel-patches-daemon-bpf-rc
Copy link

Pull request for series with
subject: selftests/bpf: fix implicit-function-declaration errors
version: 1
url: https://patchwork.kernel.org/project/netdevbpf/list/?series=1008312

@kernel-patches-daemon-bpf-rc
Copy link
Author

Upstream branch: 63d2247
series: https://patchwork.kernel.org/project/netdevbpf/list/?series=1008312
version: 1

@kernel-patches-daemon-bpf-rc
Copy link
Author

Upstream branch: cbf33b8
series: https://patchwork.kernel.org/project/netdevbpf/list/?series=1008312
version: 1

@kernel-patches-daemon-bpf-rc
Copy link
Author

Upstream branch: de73422
series: https://patchwork.kernel.org/project/netdevbpf/list/?series=1008312
version: 1

@kernel-patches-daemon-bpf-rc
Copy link
Author

Upstream branch: 4d920ed
series: https://patchwork.kernel.org/project/netdevbpf/list/?series=1008312
version: 1

@kernel-patches-daemon-bpf-rc
Copy link
Author

Upstream branch: 23f3770
series: https://patchwork.kernel.org/project/netdevbpf/list/?series=1008312
version: 1

When trying to build the latest BPF selftests, with a debug kernel
config, Pahole 1.30 and CLang 20.1.8 (and GCC 15.2), I got these errors:

  progs/dynptr_success.c:579:9: error: call to undeclared function 'bpf_dynptr_slice'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
    579 |         data = bpf_dynptr_slice(&ptr, 0, NULL, 1);
        |                ^
  progs/dynptr_success.c:579:9: note: did you mean 'bpf_dynptr_size'?
  .virtme/build-debug-btf//tools/include/vmlinux.h:120280:14: note: 'bpf_dynptr_size' declared here
   120280 | extern __u32 bpf_dynptr_size(const struct bpf_dynptr *p) __weak __ksym;
          |              ^
  progs/dynptr_success.c:579:7: error: incompatible integer to pointer conversion assigning to '__u64 *' (aka 'unsigned long long *') from 'int' [-Wint-conversion]
    579 |         data = bpf_dynptr_slice(&ptr, 0, NULL, 1);
        |              ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  progs/dynptr_success.c:596:9: error: call to undeclared function 'bpf_dynptr_slice'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
    596 |         data = bpf_dynptr_slice(&ptr, 0, NULL, 10);
        |                ^
  progs/dynptr_success.c:596:7: error: incompatible integer to pointer conversion assigning to 'char *' from 'int' [-Wint-conversion]
    596 |         data = bpf_dynptr_slice(&ptr, 0, NULL, 10);
        |              ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

I don't have these errors without the debug kernel config from
kernel/configs/debug.config. With the debug kernel, bpf_dynptr_slice()
is not declared in vmlinux.h. It is declared there without debug.config.

The fix is similar to what is done in dynptr_fail.c which is also using
bpf_dynptr_slice(): bpf_kfuncs.h is now included.

Signed-off-by: Matthieu Baerts (NGI0) <[email protected]>
@kernel-patches-daemon-bpf-rc
Copy link
Author

At least one diff in series https://patchwork.kernel.org/project/netdevbpf/list/?series=1008312 expired. Closing PR.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants